package org.com.behavioralPattern.statePattern;

/**
 * 状态模式
 * @author Jonny
 * @version 1.0
 * @Description:
 * @date 2021/4/28 10:13
 */
/**
 *  优点
 * ■ 结构清晰。
 * ■ 遵循设计原则。
 * ■ 封装性非常好。
 *
 * 缺点
 * 子类太多，不易管理。
 *
 * 状态模式效果
 * ■ 状态模式需要对每一个系统可能取得的状态创建一个状态类的子类。当系统的状态变化时，
 * 系统便改变所选的子类。所有与一个特定的状态有关的行为都被包装到一个特定的对象里面，
 * 使得行为的定义局域化。因为同样的原因，如果有新的状态以及它对应的行为需要定义时，
 * 可以很方便地通过设立新的子类的方式加到系统里，不需要改动其他的类。
 * ■ 由于每一个状态都被包装到了类里面，就可以不必采用过程性的处理方式，使用长篇累牍的条件转移语句。
 * ■ 使用状态模式使系统状态的变化变得很明显。由于不用一些属性来指明系统所处的状态，
 * 因此，就不用担心修改这些属性不当而造成的错误。
 * ■ 可以在系统的不同部分使用相同的一些状态类的对象。这种共享对象的方法是与享元模式相符合的，
 * 事实上，此时这些状态对象基本上是只有行为而没有内部状态的享元。
 *
 * 应用场景
 * ■ 对象的行为依赖于它所处的状态，即行为随状态改变而改变的场景。
 * ■ 对象在某个方法里依赖于一重或多重条件分支语句，此时可以使用状态模式将分支语句中的每一个分支
 * 都包装到一个单独的类中，使得这些条件分支语句能够以类的方式独立存在和演化。
 * 如此，维护这些独立的类就不再影响到系统的其他部分。
 *
 */
public class Test {
    public static void main(String[] args) {
        TV tv=new TV();
        tv.disCCTV1();
        tv.disCCTV2();
        tv.disCCTV3();
    }
}
